SWIG est un outil logiciel d'interfaçage pour lier des programmes en C/C++ avec des programmes de plus haut-niveau comme Python, PHP, JavaScript…"
pcre-config qui vient avec le paquet apt://libpcre3-dev:
apt install libpcre3-dev
g++ qui vient avec build-essential
apt install build-essential
Télécharger le paquet swig sur http://www.swig.org/download.html 1)
Décompresser le fichier téléchargé:
tar xvfz swig-3.0.12
Lancer l'installation comme préciser sur le site de Swig:
./configure make
et enfin l'installation finale avec les droits d'administration
make install
Il contient les variables et fonctions qui vont être dans l'interface et donc appelées par le(s) programme(s) de haut-niveau
/* exemple.i */
%module exemple
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern void set_My_variables(double x, int i);
extern double get_result(void);
extern int get_result_entier(void);
extern void place_mode(int i);
extern char *get_time();
%}
extern double My_variable;
extern void set_My_variables(double x, int i);
extern double get_result(void);
extern int get_result_entier(void);
extern void place_mode(int i);
extern char *get_time();
Exemple entre c++ et python:
swig -python -c++ mon_interface.i
Compilation avec les fichiers d'interfaçage, ici example.cxx :
g++ -c -std=c++14 src/*.cpp src/exemple.cxx -I./lib
Éditions de liens:
g++ -shared *.o -o _exemple.pyd
Dans notre exemple en python, il suffit de réaliser un import:
>>> import exemple